package main

import (
	"fmt"
	"regexp"
)

func main()  {
	str:="select id, name from users where id=2"

	matchByte,_ :=regexp.Match("\\w+$",[]byte(str))  //字节形式传递
	fmt.Println("matchByte:",matchByte)

	//re,_:=regexp.MatchString(`"\S+"`,str)  //错误
	match,_:=regexp.MatchString("\\S+",str)  //传递字符串
	fmt.Println("MatchString:",match)

	re,_:=regexp.Compile("\\w+")  //编译正则表达式
	fmt.Println(re.MatchString(str))
	res:=re.FindAllString(str, -1)  //-1表示匹配查找全部
	fmt.Println("FindAllString:",res)

	reM:=regexp.MustCompile("\\w+")  //返回一个值*Regexp类型
	resM:=reM.FindAllString(str, -1)  //返回一个切片，包含所有匹配的字符串，-1表示匹配查找全部
	resMIndex:=reM.FindAllStringIndex(str, -1)  //返回一个切片，包含所有匹配的字符串字符的索引，-1表示匹配查找全部
	resMS:=reM.FindAllStringSubmatch(str, -1)  //返回包含子切片的切片，每个单词为一个子切片，-1表示匹配查找全部
	resMSIndex:=reM.FindAllStringSubmatchIndex(str, -1)  //同FindAllStringIndex
	fmt.Println(resM)
	fmt.Println(resMIndex)
	fmt.Println(resMS)
	fmt.Println(resMSIndex)


	fmt.Println(reM.FindString(str))  //返回匹配到的第一个字符串

	rea:= regexp.MustCompile("a*")
	s:=rea.Split("abaabaccadaaae", 5)  //将re在s中匹配到的结果作为分隔符将s分割成多个字符串，并返回这些正则匹配结果之间的字符串的切片
	fmt.Println(s, s[1])
}
